Search programs can allow a user to perform text searches, for example, of a user's e-mail, computer files, music, photos, chats and Web pages viewed. When initially installed on a device (e.g., a desktop personal computer), the software program can index the files in the computer. After initial indexing is completed, the software may continue to index files as needed. The indexed files then can be searched by a user, and results can be returned, for example, in a web browser.
Some devices that store various types of files that a user may wish to search are resource-constrained in the sense that the devices may have, for example, a relatively slow central processing unit (CPU), limited random access memory (RAM) and/or limited disk storage. In such resource-constrained environments, updating the storage and index can be inefficient, resulting in high background CPU usage and too much disk activity. As a result, some solutions do not scale easily to the desirable amount of data to be stored and searched. The lack of scalability can make it difficult, if not impossible, to include features such as fast unified searching and unified keyword and entity suggestions that span across multiple applications and databases.